<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>  

    <input type="text" id="a">
    <select name="" id="sel">
        <option>+</option>
        <option>-</option>
        <option>*</option>
        <option>/</option>
    </select>
    <input type="text" id="b">
    <button id="btn">=</button>
    <input type="text" id="res">

    <script src="../js/tools.js"></script>
    <script>



         // 1 封装函数：质数判断的三种方法   有返回值
        //      假设法
        //      break   判断i的值
        //      return

        // 假设法
        // function isZhi(n) {
        //     // 立flag
        //     var flag = true ;  
        //     for(var i = 2 ; i < n ; i++) {   
        //         if(n % i === 0) {    !(n % i) && (flag = false) ; 
        //             flag = false ;
        //             // 优化的作用
        //             break ;
        //         }
        //     }
        //     return flag
        // }


        // // 利用break
        // function isZhi(n) {
            
        //     for(var i = 2 ; i < n ; i++) {
        //         if(n % i === 0) {
        //             // 只要能被一个数整除，就说明不是质数   必须要加break
        //             break ;
        //         }
        //     }
        //     // return i === n ? true : false ;
        //     // 简化如下
        //     return i === n 
        // }

        // // 利用return 
        function isZhi(n) {
            for(var i = 2 ; i < n ; i++) {
                if(n % i === 0) {
                    // 只要能被一个数整除，就说明不是质数  
                    return false
                }
            }
            return true
        }


        // 随机产生一个数，判断是不是质数
        var a = rand(0,100) ;
        var res = isZhi(a) ;
        if(res) {
            document.write(a + '是质数') ;
        }
        else {
            document.write(a + '不是质数') ;
        }
        


        // 2 封装各种三角形和99乘法表(p , span)   没有返回值

        // 3 计算calc    有返回值  
        function calc(a , b , f) {
            switch(f) {
                case '+' : return a + b ;
                case '-' : return a - b ;
                case '*' : return a * b ;
                case '/' : return a / b ;
            }
        } 


        var oNum1 = document.getElementById('a');
        var oNum2 = document.getElementById('b');
        var oSel = document.getElementById('sel');
        var oBtn = document.getElementById('btn');
        var oRes = document.getElementById('res');


        oBtn.onclick = function() {
            var a = oNum1.value * 1 ;
            var b = oNum2.value * 1 ;
            var f = oSel.value ;
            // var res = calc(n1 , n2 , f) ;
            // oRes.value = res ;
            oRes.value = calc(a , b , f) ;
        }



        // 4 调用函数：随机三位数，判断是不是水仙花 ， （调用两个函数）
        //    var n = rand(100 , 1000) ;
        //    var res = isFlower(n) ;

        // 5 封装函数：求两个数的最大公约数

        // 6 封装函数：求两个数的最小公倍数  ??  


        // 7 封装函数：随机验证码  任意位数--参数   有返回值

        // 8 封装函数：年月日的判断和计算

        // 9 某个公司采用公用电话传递数据，数据是四位的整数，在传递过程中是加密的，加密规则如下：每位数字都加上5,然后用除以10的余数代替该数字，再将第一位和第四位交换，第二位和第三位交换，请编写一个函数，传入原文，输出密文

        // 10 封装函数：计算：当传入n为偶数时，调用函数求1/2 + 1/4 + ... + 1/n ；当传入n为奇数时，调用函数求1 + 1/3 + ... + 1/n    优化！！！


    </script>
    
</body>
</html>